<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.10.0" />
<title>silk.transforms.metric API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>silk.transforms.metric</code></h1>
</header>
<section id="section-intro">
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python"># Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.

# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

from typing import List, Any, Dict

from silk.transforms.abstract import MethodCall
from torchmetrics import Metric


class MetricUpdateBase(MethodCall):
    &#34;&#34;&#34;Transform that runs a `torchmetrics.Metric` on a `NamedContext`&#34;&#34;&#34;

    def __init__(
        self,
        name: str,
        metric: Metric,
        update_only: bool,
        *args_keys: List[Any],
        **kwargs_keys: Dict[str, Any],
    ) -&gt; None:
        metric_class = metric.__class__
        method = metric_class.update if update_only else metric_class.forward
        super().__init__(name, metric, method, *args_keys, **kwargs_keys)
        if not isinstance(metric, Metric):
            raise RuntimeError(&#34;metric should be an instance of `torchmetrics.Metric`&#34;)

    @property
    def metric(self):
        return self._args_keys[0]


class MetricUpdate(MetricUpdateBase):
    def __init__(
        self,
        name: str,
        metric: Metric,
        *args_keys: List[Any],
        **kwargs_keys: Dict[str, Any],
    ) -&gt; None:
        super().__init__(name, metric, True, *args_keys, **kwargs_keys)


class MetricUpdateAndCompute(MetricUpdateBase):
    def __init__(
        self,
        name: str,
        metric: Metric,
        *args_keys: List[Any],
        **kwargs_keys: Dict[str, Any],
    ) -&gt; None:
        super().__init__(name, metric, False, *args_keys, **kwargs_keys)</code></pre>
</details>
</section>
<section>
</section>
<section>
</section>
<section>
</section>
<section>
<h2 class="section-title" id="header-classes">Classes</h2>
<dl>
<dt id="silk.transforms.metric.MetricUpdate"><code class="flex name class">
<span>class <span class="ident">MetricUpdate</span></span>
<span>(</span><span>name: str, metric: torchmetrics.metric.Metric, *args_keys: List[Any], **kwargs_keys: Dict[str, Any])</span>
</code></dt>
<dd>
<div class="desc"><p>Transform that runs a <code>torchmetrics.Metric</code> on a <code>NamedContext</code></p>
<h2 id="parameters">Parameters</h2>
<dl>
<dt><strong><code>name</code></strong> :&ensp;<code>Union[str, Iterable[str], None]</code></dt>
<dd>Name of the variable where the output will be stored.
If None, the result is directly returned, discarding the NamedContext.
If iterable of strings, the items in the returned tuple will be placed in NamedContext at provided names.</dd>
<dt><strong><code>self_</code></strong> :&ensp;<code>Any</code></dt>
<dd>Instance that the method will be applied on. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
<dt><strong><code>method</code></strong> :&ensp;<code>Union[Callable[&hellip;, Any], str]</code></dt>
<dd>Method to apply.</dd>
<dt><strong><code>args_keys</code></strong> :&ensp;<code>List[Any]</code></dt>
<dd>Arguments to pass to the method. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
<dt><strong><code>kwargs_keys</code></strong> :&ensp;<code>Dict[str, Any]</code></dt>
<dd>Named arguments to pass to the method. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MetricUpdate(MetricUpdateBase):
    def __init__(
        self,
        name: str,
        metric: Metric,
        *args_keys: List[Any],
        **kwargs_keys: Dict[str, Any],
    ) -&gt; None:
        super().__init__(name, metric, True, *args_keys, **kwargs_keys)</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="silk.transforms.metric.MetricUpdateBase" href="#silk.transforms.metric.MetricUpdateBase">MetricUpdateBase</a></li>
<li><a title="silk.transforms.abstract.MethodCall" href="abstract.html#silk.transforms.abstract.MethodCall">MethodCall</a></li>
<li><a title="silk.transforms.abstract.Lambda" href="abstract.html#silk.transforms.abstract.Lambda">Lambda</a></li>
<li><a title="silk.transforms.abstract.Transform" href="abstract.html#silk.transforms.abstract.Transform">Transform</a></li>
<li>torch.nn.modules.module.Module</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="silk.transforms.metric.MetricUpdate.dump_patches"><code class="name">var <span class="ident">dump_patches</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="silk.transforms.metric.MetricUpdate.training"><code class="name">var <span class="ident">training</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Inherited members</h3>
<ul class="hlist">
<li><code><b><a title="silk.transforms.metric.MetricUpdateBase" href="#silk.transforms.metric.MetricUpdateBase">MetricUpdateBase</a></b></code>:
<ul class="hlist">
<li><code><a title="silk.transforms.metric.MetricUpdateBase.forward" href="abstract.html#silk.transforms.abstract.Transform.forward">forward</a></code></li>
</ul>
</li>
</ul>
</dd>
<dt id="silk.transforms.metric.MetricUpdateAndCompute"><code class="flex name class">
<span>class <span class="ident">MetricUpdateAndCompute</span></span>
<span>(</span><span>name: str, metric: torchmetrics.metric.Metric, *args_keys: List[Any], **kwargs_keys: Dict[str, Any])</span>
</code></dt>
<dd>
<div class="desc"><p>Transform that runs a <code>torchmetrics.Metric</code> on a <code>NamedContext</code></p>
<h2 id="parameters">Parameters</h2>
<dl>
<dt><strong><code>name</code></strong> :&ensp;<code>Union[str, Iterable[str], None]</code></dt>
<dd>Name of the variable where the output will be stored.
If None, the result is directly returned, discarding the NamedContext.
If iterable of strings, the items in the returned tuple will be placed in NamedContext at provided names.</dd>
<dt><strong><code>self_</code></strong> :&ensp;<code>Any</code></dt>
<dd>Instance that the method will be applied on. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
<dt><strong><code>method</code></strong> :&ensp;<code>Union[Callable[&hellip;, Any], str]</code></dt>
<dd>Method to apply.</dd>
<dt><strong><code>args_keys</code></strong> :&ensp;<code>List[Any]</code></dt>
<dd>Arguments to pass to the method. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
<dt><strong><code>kwargs_keys</code></strong> :&ensp;<code>Dict[str, Any]</code></dt>
<dd>Named arguments to pass to the method. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MetricUpdateAndCompute(MetricUpdateBase):
    def __init__(
        self,
        name: str,
        metric: Metric,
        *args_keys: List[Any],
        **kwargs_keys: Dict[str, Any],
    ) -&gt; None:
        super().__init__(name, metric, False, *args_keys, **kwargs_keys)</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="silk.transforms.metric.MetricUpdateBase" href="#silk.transforms.metric.MetricUpdateBase">MetricUpdateBase</a></li>
<li><a title="silk.transforms.abstract.MethodCall" href="abstract.html#silk.transforms.abstract.MethodCall">MethodCall</a></li>
<li><a title="silk.transforms.abstract.Lambda" href="abstract.html#silk.transforms.abstract.Lambda">Lambda</a></li>
<li><a title="silk.transforms.abstract.Transform" href="abstract.html#silk.transforms.abstract.Transform">Transform</a></li>
<li>torch.nn.modules.module.Module</li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="silk.transforms.metric.MetricUpdateAndCompute.dump_patches"><code class="name">var <span class="ident">dump_patches</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="silk.transforms.metric.MetricUpdateAndCompute.training"><code class="name">var <span class="ident">training</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Inherited members</h3>
<ul class="hlist">
<li><code><b><a title="silk.transforms.metric.MetricUpdateBase" href="#silk.transforms.metric.MetricUpdateBase">MetricUpdateBase</a></b></code>:
<ul class="hlist">
<li><code><a title="silk.transforms.metric.MetricUpdateBase.forward" href="abstract.html#silk.transforms.abstract.Transform.forward">forward</a></code></li>
</ul>
</li>
</ul>
</dd>
<dt id="silk.transforms.metric.MetricUpdateBase"><code class="flex name class">
<span>class <span class="ident">MetricUpdateBase</span></span>
<span>(</span><span>name: str, metric: torchmetrics.metric.Metric, update_only: bool, *args_keys: List[Any], **kwargs_keys: Dict[str, Any])</span>
</code></dt>
<dd>
<div class="desc"><p>Transform that runs a <code>torchmetrics.Metric</code> on a <code>NamedContext</code></p>
<h2 id="parameters">Parameters</h2>
<dl>
<dt><strong><code>name</code></strong> :&ensp;<code>Union[str, Iterable[str], None]</code></dt>
<dd>Name of the variable where the output will be stored.
If None, the result is directly returned, discarding the NamedContext.
If iterable of strings, the items in the returned tuple will be placed in NamedContext at provided names.</dd>
<dt><strong><code>self_</code></strong> :&ensp;<code>Any</code></dt>
<dd>Instance that the method will be applied on. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
<dt><strong><code>method</code></strong> :&ensp;<code>Union[Callable[&hellip;, Any], str]</code></dt>
<dd>Method to apply.</dd>
<dt><strong><code>args_keys</code></strong> :&ensp;<code>List[Any]</code></dt>
<dd>Arguments to pass to the method. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
<dt><strong><code>kwargs_keys</code></strong> :&ensp;<code>Dict[str, Any]</code></dt>
<dd>Named arguments to pass to the method. String values starting with a "@" will be replaced by corresponding named context variable value.</dd>
</dl></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">class MetricUpdateBase(MethodCall):
    &#34;&#34;&#34;Transform that runs a `torchmetrics.Metric` on a `NamedContext`&#34;&#34;&#34;

    def __init__(
        self,
        name: str,
        metric: Metric,
        update_only: bool,
        *args_keys: List[Any],
        **kwargs_keys: Dict[str, Any],
    ) -&gt; None:
        metric_class = metric.__class__
        method = metric_class.update if update_only else metric_class.forward
        super().__init__(name, metric, method, *args_keys, **kwargs_keys)
        if not isinstance(metric, Metric):
            raise RuntimeError(&#34;metric should be an instance of `torchmetrics.Metric`&#34;)

    @property
    def metric(self):
        return self._args_keys[0]</code></pre>
</details>
<h3>Ancestors</h3>
<ul class="hlist">
<li><a title="silk.transforms.abstract.MethodCall" href="abstract.html#silk.transforms.abstract.MethodCall">MethodCall</a></li>
<li><a title="silk.transforms.abstract.Lambda" href="abstract.html#silk.transforms.abstract.Lambda">Lambda</a></li>
<li><a title="silk.transforms.abstract.Transform" href="abstract.html#silk.transforms.abstract.Transform">Transform</a></li>
<li>torch.nn.modules.module.Module</li>
</ul>
<h3>Subclasses</h3>
<ul class="hlist">
<li><a title="silk.transforms.metric.MetricUpdate" href="#silk.transforms.metric.MetricUpdate">MetricUpdate</a></li>
<li><a title="silk.transforms.metric.MetricUpdateAndCompute" href="#silk.transforms.metric.MetricUpdateAndCompute">MetricUpdateAndCompute</a></li>
</ul>
<h3>Class variables</h3>
<dl>
<dt id="silk.transforms.metric.MetricUpdateBase.dump_patches"><code class="name">var <span class="ident">dump_patches</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="silk.transforms.metric.MetricUpdateBase.training"><code class="name">var <span class="ident">training</span> : bool</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
<h3>Instance variables</h3>
<dl>
<dt id="silk.transforms.metric.MetricUpdateBase.metric"><code class="name">var <span class="ident">metric</span></code></dt>
<dd>
<div class="desc"></div>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">@property
def metric(self):
    return self._args_keys[0]</code></pre>
</details>
</dd>
</dl>
<h3>Inherited members</h3>
<ul class="hlist">
<li><code><b><a title="silk.transforms.abstract.MethodCall" href="abstract.html#silk.transforms.abstract.MethodCall">MethodCall</a></b></code>:
<ul class="hlist">
<li><code><a title="silk.transforms.abstract.MethodCall.forward" href="abstract.html#silk.transforms.abstract.Transform.forward">forward</a></code></li>
</ul>
</li>
</ul>
</dd>
</dl>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="silk.transforms" href="index.html">silk.transforms</a></code></li>
</ul>
</li>
<li><h3><a href="#header-classes">Classes</a></h3>
<ul>
<li>
<h4><code><a title="silk.transforms.metric.MetricUpdate" href="#silk.transforms.metric.MetricUpdate">MetricUpdate</a></code></h4>
<ul class="">
<li><code><a title="silk.transforms.metric.MetricUpdate.dump_patches" href="#silk.transforms.metric.MetricUpdate.dump_patches">dump_patches</a></code></li>
<li><code><a title="silk.transforms.metric.MetricUpdate.training" href="#silk.transforms.metric.MetricUpdate.training">training</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="silk.transforms.metric.MetricUpdateAndCompute" href="#silk.transforms.metric.MetricUpdateAndCompute">MetricUpdateAndCompute</a></code></h4>
<ul class="">
<li><code><a title="silk.transforms.metric.MetricUpdateAndCompute.dump_patches" href="#silk.transforms.metric.MetricUpdateAndCompute.dump_patches">dump_patches</a></code></li>
<li><code><a title="silk.transforms.metric.MetricUpdateAndCompute.training" href="#silk.transforms.metric.MetricUpdateAndCompute.training">training</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="silk.transforms.metric.MetricUpdateBase" href="#silk.transforms.metric.MetricUpdateBase">MetricUpdateBase</a></code></h4>
<ul class="">
<li><code><a title="silk.transforms.metric.MetricUpdateBase.dump_patches" href="#silk.transforms.metric.MetricUpdateBase.dump_patches">dump_patches</a></code></li>
<li><code><a title="silk.transforms.metric.MetricUpdateBase.metric" href="#silk.transforms.metric.MetricUpdateBase.metric">metric</a></code></li>
<li><code><a title="silk.transforms.metric.MetricUpdateBase.training" href="#silk.transforms.metric.MetricUpdateBase.training">training</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc" title="pdoc: Python API documentation generator"><cite>pdoc</cite> 0.10.0</a>.</p>
</footer>
</body>
</html>